home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / demo.exe / STACKS.DEM < prev    next >
Text File  |  1992-02-16  |  4KB  |  134 lines

  1. ; ----------------------------
  2. ; STACKS.DEM   - Demoprogramm für die Macros aus STACKS.MAB
  3. ;                (für den A86)
  4. ;
  5. ;                (c) Bernd Schemmer 1990 - 1992
  6. ;                Letzter Update: 15.02.1992
  7. ;
  8. ; Übersetzen:
  9. ;  A86 MACROS.MAC STACKS.MAB STACKS.DEM DEMOS.INC TO STACKS.COM
  10. ; ---------------------------
  11.  
  12.          jmp start            ; Daten überspringen
  13.  
  14. logo  db CR,LF
  15.       db 'STACKS.DEM  - Demoprogramm für die Macros aus STACKS.MAB'
  16.       db CR,LF
  17.       db '--------------------------------------------------------'
  18.       db CR,LF
  19.       db CR,LF
  20. GETLENGTH logo
  21.  
  22. ; Fehlermeldung
  23. ;
  24. MakeMsg StacksError, 'STACKS nicht gefunden!'
  25.  
  26. ; Maske für die Ausgabe der Daten
  27. ;
  28. _StackHeader   db CR,LF
  29.                db 'Aufbau des Headers des STACKS-Bereichs: '
  30.                db CR,LF
  31.                db 'ID:                 '
  32. _Stacks_IDWord db                     'xxxxh',CR,LF
  33.                db 'Anzahl:             '
  34. _Stacks_Count  db                     'xxxxh',CR,LF
  35.                db 'Erster Stack:       '
  36. _Stacks_1Stack db                     'xxxxh',CR,LF
  37.                db 'Länge eines Stacks: '
  38. _Stacks_Length db                     'xxxxh',CR,LF
  39.                db 'Rahmentabelle:      '
  40. _Stacks_FrameT db                     'xxxxh:xxxxh',CR,LF
  41.                db 'Min.:               '
  42. _Stacks_MFrame db                     'xxxxh',CR,LF
  43.                db 'Max.:               '
  44. _Stacks_XFrame db                     'xxxxh',CR,LF
  45.                db CR,LF
  46.                db 'Daten der Stack-Frames:',CR,LF
  47. _StacksBelegt  db 'xxxxx belegte Stacks, '
  48. _StacksFrei    db 'xxxxx freie Stacks und '
  49. _StacksGesp    db 'xxxxx gesperrte Stacks.'
  50.                db CR,LF
  51.                db CR,LF
  52. GETLENGTH _StackHeader
  53.  
  54. start:
  55.          call ShowLogo        ; Logo ausgeben und Speicherblock verkleinern
  56.  
  57.          TestDOSVersion 3,30  ; DOS-Version überprüfen
  58.  
  59.          GetStacksData
  60.          jnc >l1
  61.                               ; STACKS nicht gefunden
  62.          WRITE_STRING StacksError
  63.          jmp Ende
  64.  
  65. l1:
  66.          mov ds,es            ; DS:BX zeigt auf den Header des STACKS-Bereichs
  67.          mov es,cs            ; ES = CS
  68.                               ; Maske füllen
  69.  
  70.          mov ax,Stacks_IDWord
  71.          mov di,offset _Stacks_IDWord
  72.          call Konvert_AX_To_Hexstring
  73.  
  74.          mov ax, Stacks_Count
  75.          mov di,offset _Stacks_Count
  76.          call Konvert_AX_To_Hexstring
  77.  
  78.          mov ax,Stacks_1Stack
  79.          mov di,offset _Stacks_1Stack
  80.          call Konvert_AX_To_Hexstring
  81.  
  82.          mov ax,Stacks_Length
  83.          mov di,offset _Stacks_Length
  84.          call Konvert_AX_To_Hexstring
  85.  
  86.          mov ax,w Stacks_FrameT
  87.          push ax
  88.          mov ax,w Stacks_FrameT+2
  89.          mov di,offset _Stacks_FrameT
  90.          call Konvert_AX_To_Hexstring
  91.          pop ax
  92.          inc di,2
  93.          call Konvert_AX_To_Hexstring
  94.  
  95.          mov ax,Stacks_MFrame
  96.          mov di,offset _Stacks_MFrame
  97.          call Konvert_AX_To_Hexstring
  98.  
  99.          mov ax,Stacks_XFrame
  100.          mov di,offset _Stacks_XFrame
  101.          call Konvert_AX_To_Hexstring
  102.  
  103.                               ; Rahmentabelle auswerten
  104.          mov cx,Stacks_Count
  105.          lds bx,Stacks_FrameT ; DS:BX -> Rahmentabelle
  106.          xor ax,ax
  107.          xor dx,dx
  108.          xor bp,bp
  109. l0:
  110.          cmp Frame_ID,0       ; Stack frei?
  111.          if e inc ax         
  112.          cmp Frame_ID,1       ; Stack belegt?
  113.          if e inc bp         
  114.          cmp Frame_ID,3       ; Stack gesperrt?
  115.          if e inc dx
  116.          add bx,TYPE StackFrameArea
  117.          loop l0
  118.  
  119.          mov di,offset _StacksFrei
  120.          call Konvert_AX_To_Dezstring
  121.          mov di,offset _StacksBelegt
  122.          mov ax,bp
  123.          call Konvert_AX_To_Dezstring
  124.          mov di,offset _StacksGesp
  125.          mov ax,dx
  126.          call Konvert_AX_To_Dezstring
  127.  
  128.      mov ds,cs
  129.          WRITE_STRING _StackHeader
  130.  
  131. Ende:
  132.          EndProcess 0
  133.  
  134.